// @ts-nocheck
// 全局错误处理

window.addEventListener(
  "error",
  (errorEvent) => {
    if (!errorEvent.message) {
      // errorEvent不存在message说明是资源加载异常
      console.log(errorEvent);
      const tagName = errorEvent.target.tagName;
      const srcVal = errorEvent.target.getAttribute("src");
      const linkVal = errorEvent.target.getAttribute("link");
      const altVal = errorEvent.target.getAttribute("alt");
      console.error(`资源加载异常: 资源加载标签:[${tagName}], src:[${srcVal}], link:[${linkVal}], altVal:[${altVal}]`);
    }
  },
  true
);

window.addEventListener("unhandledrejection", () => {
  // 未捕获的Promise.reject
});

/**
 * vue全局异常处理
 * @param err
 * @param instance
 * @param info
 */
export function vueGlobalErrorHandler(err: unknown, instance: ComponentPublicInstance | null, info: string) {
  if (err instanceof Error) {
    const errorInfo = extractErrorInfo(err);
    console.error(err);
    console.table(errorInfo);
  } else {
    console.log(`vue全局错误捕获: 错误信息:${err}, vue框架给出的错误信息:${info}`);
  }
}
